# DRF的分页器
from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response

# 自定义分页器
class NumPage(PageNumberPagination):
    # 指定分页的相关属性
    # 指定页容量属性（每页展示的数量） 每页最大返回5条数据
    max_page_size = 10
    # 指定页容量的请求参数 前端请求时可以通page_size指定需要的数量，但是不能超过最大页容量
    page_size_query_param = 'pagesize'

    # 重写分页返回方法，按照指定的字段进行分页数据返回
    def get_paginated_response(self, data):
        return Response({
            'count': self.page.paginator.count,  # 总数量
            'lists': data,  # 用户数据
            'page': self.page.number,  # 当前页数
            'pages': self.page.paginator.num_pages,  # 总页数
            'pagesize': self.page_size  # 后端指定的页容量

        })



# 重写jwt返回结果的方法，按照接口文档返回数据内容
def jwt_response_payload_handler(token, user=None, request=None):
    """
    :param token: 生成好的token
    :param user: 用户对象
    :param request: 请求对象
    :return:
    """
    return {
        'token': token,
        'id': user.id,
        'username': user.username
    }